Assembly Language প্রোগ্রামিংয়ে Stack Pointer (SP) এবং Base Pointer (BP) দুইটি গুরুত্বপূর্ণ রেজিস্টার, যেগুলি স্ট্যাকের কার্যক্রম পরিচালনা এবং ব্যবস্থাপনার জন্য ব্যবহৃত হয়। স্ট্যাক মেমোরির একটি বিশেষ অংশ যেখানে ডেটা অস্থায়ীভাবে সংরক্ষণ করা হয়, বিশেষত ফাংশনের কল এবং রিটার্ন অপারেশনগুলির জন্য।
Stack Pointer (SP):
- সংজ্ঞা: SP রেজিস্টারটি স্ট্যাকের বর্তমান টপ পজিশন নির্দেশ করে। এটি নির্দেশ করে স্ট্যাকে সর্বশেষ ডেটা কোন ঠিকানায় সংরক্ষিত হয়েছে বা কোথায় নতুন ডেটা সংরক্ষণ করা হবে।
- ব্যবহার:
- PUSH এবং POP: যখন
PUSHInstruction ব্যবহার করা হয়, SP রেজিস্টার আপডেট হয় এবং ডেটা স্ট্যাকে সংরক্ষিত হয়। আরPOPInstruction এর মাধ্যমে ডেটা স্ট্যাক থেকে বের করা হলে SP আপডেট হয়। - স্ট্যাকের উপরে সংরক্ষণ এবং পুনরুদ্ধার: SP রেজিস্টারের মান পরিবর্তন করে স্ট্যাকের উপরে নতুন ডেটা সংরক্ষণ বা পুনরুদ্ধার করা হয়।
- PUSH এবং POP: যখন
উদাহরণ:
PUSH AX ; AX এর ডেটা স্ট্যাকে সংরক্ষণ, SP কমে যাবে POP BX ; স্ট্যাক থেকে ডেটা BX এ পুনরুদ্ধার, SP বাড়বে
Base Pointer (BP):
- সংজ্ঞা: BP রেজিস্টার সাধারণত স্ট্যাক ফ্রেমের বেস পয়েন্টার হিসেবে কাজ করে। এটি ফাংশনের লোকাল ভেরিয়েবল এবং প্যারামিটার অ্যাক্সেস করতে ব্যবহৃত হয়।
- ব্যবহার:
- ফাংশন কল: ফাংশন কলের সময় BP রেজিস্টারটি একটি রেফারেন্স পয়েন্ট হিসেবে কাজ করে, যাতে লোকাল ভেরিয়েবল এবং ফাংশনের প্যারামিটারগুলি সহজেই অ্যাক্সেস করা যায়।
- স্ট্যাক ফ্রেম ম্যানেজমেন্ট: ফাংশন শুরুতে BP রেজিস্টারের বর্তমান মান
PUSHকরে রাখা হয় এবং পরে ফাংশন শেষে পুনরায় রিস্টোর করা হয়।
উদাহরণ:
PUSH BP ; BP এর পূর্বের মান সংরক্ষণ MOV BP, SP ; নতুন ফ্রেমের জন্য BP সেট করা ; লোকাল ভেরিয়েবল এবং প্যারামিটার অ্যাক্সেস POP BP ; BP এর পূর্বের মান পুনরুদ্ধার
Stack Pointer (SP) এবং Base Pointer (BP) এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Stack Pointer (SP) | Base Pointer (BP) |
|---|---|---|
| প্রধান কাজ | স্ট্যাকের বর্তমান টপ নির্দেশ করে | স্ট্যাক ফ্রেমের বেস পয়েন্টার নির্দেশ করে |
| ব্যবহার | PUSH এবং POP অপারেশনের সময় আপডেট হয় | ফাংশনের প্যারামিটার এবং লোকাল ভেরিয়েবল অ্যাক্সেস |
| মান পরিবর্তন | স্বয়ংক্রিয়ভাবে পরিবর্তিত হয় | সাধারণত ফাংশন কলের সময় ম্যানুয়ালি ব্যবহৃত |
| ফ্রেম পয়েন্টার হিসেবে | ব্যবহার করা হয় না | ফ্রেম পয়েন্টার হিসেবে কাজ করে |
সারসংক্ষেপ
Stack Pointer (SP) রেজিস্টার স্ট্যাকের বর্তমান অবস্থান নির্দেশ করে এবং PUSH এবং POP নির্দেশনাগুলির সময় স্বয়ংক্রিয়ভাবে আপডেট হয়। Base Pointer (BP) রেজিস্টার ফাংশনের লোকাল ভেরিয়েবল এবং প্যারামিটার অ্যাক্সেসের জন্য ফ্রেম পয়েন্টার হিসেবে ব্যবহৃত হয়। ফাংশন কলের সময় BP ম্যানুয়ালি নিয়ন্ত্রণ করা হয়, যা স্ট্যাক ফ্রেম পরিচালনা করতে সাহায্য করে।
Read more